/**
  @(#)$Id: AL_AutoSync.h 69 2013-10-08 03:03:33Z xiaoting $
  @brief    	Multi-threaded programming critical section (lock)

  @author		$Author: xiaoting $
  @date			$Date: 2013-10-08 11:03:33 +0800 (周二, 08 十月 2013) $
  @version		$Revision: 69 $
  @url			$URL: https://svn.code.sf.net/p/xiaoting/game/trunk/MyProject/AL_StandardLib/groupinc/AL_AutoSync.h $
  @header		$Header: https://svn.code.sf.net/p/xiaoting/game/trunk/MyProject/AL_StandardLib/groupinc/AL_AutoSync.h 69 2013-10-08 03:03:33Z xiaoting $
 */

#ifndef CXX_AL_AUTOSYNC_H
#define CXX_AL_AUTOSYNC_H

class AL_SyncObj;

///////////////////////////////////////////////////////////////////////////
//			AL_AutoSync
///////////////////////////////////////////////////////////////////////////
class AL_AutoSync
{
public:
	/**
	* Construction
	*
	* @param AL_SyncObj& cAL_SyncObj
	* @return
	*/
	AL_AutoSync(AL_SyncObj& cAL_SyncObj);

	/**
	* Destruction
	*
	* @param
	* @return
	*/
	~AL_AutoSync();

protected:
private:
	/**
	*Copy Construct
	*
	* @param const AL_AutoSync& cAL_AutoSync
	* @return
	*/
	AL_AutoSync(const AL_AutoSync& cAL_AutoSync);

	/**
	*Assignment
	*
	* @param const AL_AutoSync& cAL_AutoSync
	* @return AL_AutoSync&
	*/
	AL_AutoSync &operator =(const AL_AutoSync& cAL_AutoSync);

public:
protected:
private:
	AL_SyncObj&			m_cAL_SyncObj;
};

#endif // CXX_AL_AUTOSYNC_H
/* EOF */
